package marketplace.jpa.datas;

import java.io.Serializable;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import marketplace.jpa.entities.ContenidoDigital;
import marketplace.jpa.entities.Version;

public class DataVersion implements Serializable, Comparable<DataVersion>{

	private static final long serialVersionUID = 1L;

	private int idVersion;
	private int numero;
	private String nombre;
	private Double precio;
	private Double tamanio;
	private String archivo;
	private int cantDescragas;
	private String estadoAprobacion;
	private Date fechaCreacion;
	private DataContenidoDigital contDig;
	private String fechaString;

	
	
	//// CONSTRUCTORES /////////////////////////////////////////////////////////////////
	
	public DataVersion() { super(); }
	
	public DataVersion(Version ver) {
		this.idVersion = ver.getIdVersion();
		this.numero = ver.getNumero();
		this.nombre = ver.getNombre();
		this.precio = ver.getPrecio();
		this.tamanio = ver.getTamanio();
		this.archivo = ver.getArchivo();
		this.cantDescragas = ver.getCantDescragas();
		this.estadoAprobacion = ver.getEstadoAprobacion();
		this.contDig = new DataContenidoDigital(ver.getContDig());
		this.fechaCreacion = ver.getFechaCreacion();
		
		java.util.Date devolver = new java.util.Date(ver.getFechaCreacion().getTime());
		
		SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");

		java.util.Date save;
		try {
			save = formato.parse(formato.format(devolver));
			this.fechaString = save.toString();
		} catch (ParseException e) {			
			e.printStackTrace();
		}		
	}
	
	public DataVersion(int numero, String nombre, Double precio,
			String archivo, Double tamanio, int cantDescragas, 
			String estadoAprobacion, ContenidoDigital contDig) {
		
		super();
//		this.idVersion = idVersion;
		this.numero = numero;
		this.nombre = nombre;
		this.precio = precio;
		this.tamanio = tamanio;
		this.archivo = archivo;
		this.cantDescragas = cantDescragas;
		this.estadoAprobacion = estadoAprobacion;
		this.contDig = new DataContenidoDigital(contDig);
	}
	
	public DataVersion(int idVersion, int numero, String nombre, Double precio, 
						String estadoAprobacion, String archivo, 
						Double tamanio, DataContenidoDigital contDig) {
		super();
		this.idVersion = idVersion;
		this.numero = numero;
		this.nombre = nombre;
		this.precio = precio;
		this.estadoAprobacion = estadoAprobacion;
		this.tamanio = tamanio;
		this.archivo = archivo;
		this.contDig = contDig;
		
		SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
		java.util.Date fecha = new java.util.Date();
		/*System.out.println("Constructor Version: date: fecha : " + new SimpleDateFormat("dd/MM/yyyy").format(fecha));*/
		try {
			java.util.Date save = formato.parse(formato.format(fecha));
			this.fechaCreacion = new java.sql.Date(save.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}

	}
	

	
	
	//// GETERS & SETERS /////////////////////////////////////////////////////////////////
	
	
	public int getIdVersion() { return idVersion; }
	public void setIdVersion(int idVersion) { this.idVersion = idVersion; }
	
	public int getNumero() { return numero; }
	public void setNumero(int numero) { this.numero = numero; }
	
	public String getNombre() { return nombre; }
	public void setNombre(String nombre) { this.nombre = nombre; }
	
	public Double getPrecio() { return precio; }
	public void setPrecio(Double precio) { this.precio = precio; }
	
	public Double getTamanio() { return tamanio; }
	public void setTamanio(Double tamanio) { this.tamanio = tamanio; }
	
	public int getCantDescragas() { return cantDescragas; }
	public void setCantDescragas(int cantDescragas) { this.cantDescragas = cantDescragas; }
	
	public String getEstadoAprobacion() { return estadoAprobacion; }
	public void setEstadoAprobacion(String estadoAprobacion) { this.estadoAprobacion = estadoAprobacion; }
	
	public DataContenidoDigital getContDig() { return contDig; }
	public void setContDig(DataContenidoDigital contDig) { this.contDig = contDig; }

	public Date getFechaCreacion() { return fechaCreacion; }
	public void setFechaCreacion(Date fechaCreacion) { this.fechaCreacion = fechaCreacion; }

	public String getFechaString() { return fechaString; }
	public void setFechaString(String fechaString) { this.fechaString = fechaString;	}

	public String getArchivo() { return archivo; }
	public void setArchivo(String archivo) { this.archivo = archivo; }
	

	@Override
	public int compareTo(DataVersion dv) {
		if (this.idVersion < dv.idVersion){
			return -1; 
		}else if(this.idVersion == dv.idVersion){
			if (this.cantDescragas == dv.cantDescragas){
				return 0;
			}else if (this.cantDescragas > dv.cantDescragas){
				return 1;
			}else{
				return -1;
			}
		}else{
			return 1;
		}
	}

	
}
